//@Author: wulinlin
//@Description:
//@File:  fileService
//@Version: 1.0.0
//@Date: 2023/03/14 18:37

package admin

//import (
//	"errors"
//	"fmt"
//	"github.com/xuri/excelize/v2"
//	"pingbuqingyun_django/app/models/dao"
//	"pingbuqingyun_django/pkg/tools"
//)
//
//type fileService struct {
//	TitleMap map[string]int
//}
//
//var FileService = newFileService()
//
//// const var init 代码
//func newFileService() *fileService {
//	return &fileService{
//		//db: tools.DB(),
//		TitleMap: map[string]int{
//			"问题":   0,
//			"解答":   1,
//			"分类名称": 2,
//		},
//	}
//}
//
//type LoadRes struct {
//	SuccessNum int
//	Failed     int
//}
//
//func (f *fileService) CheckTemplate(absPath string) (*LoadRes, error) {
//
//	res := LoadRes{
//		SuccessNum: 0,
//		Failed:     0,
//	}
//	excleFile, err := excelize.OpenFile(absPath)
//	if err != nil {
//		// 打开excel文件失败
//		return nil, err
//	}
//	defer func() {
//		err := excleFile.Close()
//		if err != nil {
//			return
//		}
//	}()
//	activeSheetIndex := excleFile.GetActiveSheetIndex()         // 获取当前活跃的sheet index
//	activeSheetName := excleFile.GetSheetName(activeSheetIndex) // 获取当前活跃的 sheet name
//	//fmt.Println("活跃的sheet", activeSheetName)
//	if activeSheetName != "Sheet1" {
//		return nil, errors.New("excel标题校验不通过：找不到名字为【 Sheet1 】的单元格")
//	}
//	rows, err := excleFile.GetRows(activeSheetName)
//	if err != nil {
//		fmt.Println("获取excel行数失败！")
//		panic(err)
//	}
//	for i := 0; i < len(rows[1]); i++ {
//		name := rows[0][i]
//		k, ok := f.TitleMap[name]
//		fmt.Println(k, name)
//		if !ok {
//			return nil, errors.New("excel标题校验不通过：找不到名字为【" + name + "】的列")
//		}
//		f.TitleMap[name] = k
//	}
//	db := tools.DB()
//	// 1。获取所有分类ID和名字
//	var cate []dao.CategoryModel
//
//	db.Find(&cate)
//	cateMap := make(map[string]int64)
//	for _, i := range cate {
//		cateMap[i.Name] = i.ID
//	}
//	// 获取所有分类列表
//	for i, j := range rows {
//		var article dao.ArticleModel
//		//fmt.Println(i, j)
//		if i == 0 {
//			continue
//		}
//		cateName := j[f.TitleMap["分类名称"]]
//		k, ok := cateMap[cateName]
//		if !ok {
//			res.Failed++
//			continue
//		}
//		title := j[f.TitleMap["问题"]]
//		temp := dao.ArticleModel{
//			Title:      title,
//			Content:    j[f.TitleMap["解答"]],
//			CreatorId:  0,
//			CategoryId: k,
//			VisitedNum: 0,
//			MarkNum:    0,
//		}
//		// 查看是否存在
//		exist := db.Where(&dao.ArticleModel{Title: title, CategoryId: k}).First(&article)
//		if exist.RowsAffected == 1 {
//			res.Failed++
//			continue
//		}
//		db.Create(&temp)
//		res.SuccessNum++
//	}
//	return &res, nil
//}
